package com.kc.data.common.domain.model;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.apache.ibatis.type.JdbcType;

import javax.validation.constraints.*;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

@Data
@TableName(value = "kc_scenic")
public class BizScenic implements Serializable {

    private static final long serialVersionUID = -1883171790120858398L;

    @TableId
    private Integer id;
    /**
     * 景区名
     */
    @NotBlank(message = "景区名称不能为空")
    @Size(min = 0, max = 100, message = "景区名称不能超过100个字符")
    private String scenicName;
    /**
     * 景区轮播图
     */
    private String scenicImg;
    /**
     * 景区视频图片
     */
//    @NotBlank(message = "景区视频图片不能为空")
    private String scenicVideoImg;
    /**
     * 景区视频
     */
//    @NotBlank(message = "景区视频不能为空")
    private String scenicVideo;
    /** 经度 */
    @NotNull(message = "经度不能为空")
    @DecimalMin(value = "-180", message = "经度有误")
    @DecimalMax(value = "180", message = "经度有误")
    private BigDecimal longitude;
    /** 纬度 */
    @NotNull(message = "纬度不能为空")
    @DecimalMin(value = "-90", message = "经度有误")
    @DecimalMax(value = "90", message = "经度有误")
    private BigDecimal latitude;
    /**
     * 省编码
     */
    private String province;
    /**
     * 市编码
     */
    private String city;
    /**
     * 城市
     */
    private String cityName;
    /**
     * 区/县编码
     */
    private String area;
    /**
     * 景区分类
     */
    private String scenicType;
    /**
     * 详细地址
     */
    @NotBlank(message = "请检查经纬度")
    private String scenicAddress;
    /**
     * 景区描述
     */
    @NotBlank(message = "景区描述不能为空")
    @Size(min = 0, max = 100, message = "景区名称不能超过100个字符")
    private String scenicDescribe;
    /**
     * 排序
     */
    @Min(0)
    @Max(500)
    private Integer sort;
    /**
     * 状态 0禁用 1正常
     */
    @NotBlank(message = "景区状态不能为空")
    private String status;
    /**
     * 是否推荐:0未推荐，1推荐
     */
    @NotBlank(message = "推荐状态不能为空")
    private String isRecommend;
    /**
     * 是否人脸认证（景区是否有闸机）:1认证，0不认证
     */
    @NotBlank(message = "人脸认证状态不能为空")
    private String isFace;
    /**
     * 景区等级
     */
    @NotNull(message = "景区等级不能为空")
    private Integer level;
    /**
     * 平均分
     */
    @Min(value = 0)
    @Max(value = 5)
    private Double score;
    /**
     * 营业开始时间
     */
    @NotBlank(message = "营业开始时间不能为空")
    private String startTime;
    /**
     * 营业结束时间
     */
    @NotBlank(message = "营业结束时间不能为空")
    private String endTime;
    /**
     * 营业时间说明
     */
    @NotBlank(message = "营业时间说明不能为空")
//    @ColumnType(column = "`explain`", jdbcType = JdbcType.VARCHAR)
    @TableField("`explain`")
    @Size(min = 0, max = 100, message = "景区名称不能超过20个字符")
    private String explain;
    @NotBlank(message = "景区介绍不能为空")
    @Size(min = 0, max = 1000, message = "景区介绍不能超过1000个字符")
    //@ColumnType(column = "`describe`", jdbcType = JdbcType.VARCHAR)
    @TableField("`describe`")
    private String describe;
    @NotBlank(message = "服务项不能为空")
    @Size(min = 0, max = 1000, message = "服务项不能超过1000个字符")
    private String serviceItem;
    /**
     * 景区介绍图片
     */
    private String describeImg;
    /**
     * 服务项图片
     */
    private String serviceItemImg;
    @NotBlank(message = "安全提示不能为空")
    @Size(min = 0, max = 1000, message = "安全提示不能超过1000个字符")
    private String notice;
    /**
     * 是否删除:1删除，0未删除
     */
    private Integer isDeleted;

    /**
     * 景区图片数组
     */
    @NotNull
    @Size(min = 1, max = 6, message = "请检查图片数量")

    @TableField(exist = false)
    private String[] scenicImgs;

    /** 创建者 */
    private String createBy;

    /** 创建时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;

    /** 更新者 */
    private String updateBy;

    /** 更新时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;

    /**
     * 租户id
     */
    private Integer tenantId;
    /**
     * 用户id
     */
    private Integer userId;
    /**
     * 图片尺寸
     */
    private String imageAttr;
    /**
     * 票务系统景区id
     */
    private Integer ticketScenicId = 0;

    private String adcode;
    /**是否完善信息标识，1已完善，0未完善*/
    private Integer isPersonalInfoPerfected;

    private String goodsId;
    @TableField(exist = false)
    private Integer[] goodsIdArray;

    /**二级商户号*/
    private String subMchid;

}
